import axios from 'axios'
import { ElMessage } from 'element-plus'
import useUserStore from '@/store/modules/user'

const request = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 5000
})

const userRequest = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_USER_API,
  timeout: 5000
})

;[request, userRequest].map((req) => {
  req.interceptors.request.use((config) => {
    const userStore = useUserStore()
    config.headers.token = userStore.token

    return config
  })
  req.interceptors.response.use(
    (response) => response.data,
    (error) => {
      let message = ''
      const status = error.response.status
      switch (status) {
        case 401:
          message = 'token过期'
          break
        case 403:
          message = '无权访问'
          break
        case 404:
          message = '请求地址错误'
          break
        case 500:
          message = '服务器故障'
          break
        default:
          message = '网络连接故障'
      }

      ElMessage({
        type: 'error',
        message
      })

      return Promise.reject(error)
    }
  )
})

export { userRequest }
export default request
